# ==================================================================================
# 通用逻辑协议生成器
# ==================================================================================
# 功能说明：
#   编译通用逻辑消息协议文件（Common Logic Protocol）
#   生成C++代码和NanoPB嵌入式代码
# 
# 输入：
#   ${COMMON_LOGIC_META_PATH}/*.proto  - 通用逻辑协议定义文件
# 
# 输出：
#   .pb.h / .pb.cc      - 标准C++ Protobuf代码（用于服务器）
#   .nanopb.h / .cc     - NanoPB嵌入式代码（用于客户端或资源受限环境）
# 
# NanoPB说明：
#   NanoPB是轻量级的protobuf实现，适合嵌入式系统和客户端使用
#   特点：无动态内存分配、代码体积小、性能高
# ==================================================================================

include ./define.makefile
.PHONY:all

all:${COMMON_LOGIC_DESC_H} ${COMMON_LOGIC_DESC_CPP} ${COMMON_LOGIC_DESC_STRUCT_H} ${COMMON_LOGIC_DESC_STRUCT_CPP}

# ----------------------------------
# 编译通用逻辑协议文件
# ----------------------------------
${COMMON_LOGIC_DESC_H} ${COMMON_LOGIC_DESC_CPP} ${COMMON_LOGIC_DESC_STRUCT_H} ${COMMON_LOGIC_DESC_STRUCT_CPP}:${COMMON_LOGIC_DESC_XML}
	@echo "  创建目标目录..."
	mkdir -p ${PROTOCGEN_FILE_PATH}
	mkdir -p ${NEW_PROTOCGEN_FILE_PATH}
	@echo "  编译通用逻辑协议（生成C++和NanoPB代码）..."
	${PROTOC} $^ --plugin=protoc-gen-nanopb=${NANOPB_PLUGIN} -I${THIRD_PARTY_INC_PATH} -I${NANOPB_PLUGIN_PROTO} -I${PROTOCOL_PATH} -I${COMMON_LOGIC_META_PATH} --cpp_out=${PROTOCGEN_FILE_PATH} --nanopb_out=-e.nanopb:${PROTOCGEN_FILE_PATH}
	@echo "  复制生成的文件到逻辑消息目录..."
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH} --src="${COMMON_LOGIC_DESC_H} ${COMMON_LOGIC_DESC_CPP}" --dst=${NEW_PROTOCGEN_FILE_PATH}/
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH} --src="${COMMON_LOGIC_DESC_STRUCT_H} ${COMMON_LOGIC_DESC_STRUCT_CPP}" --dst=${NEW_PROTOCGEN_FILE_PATH}/

